home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Free Software Collection: Marty 1
/
FM Towns Marty 1 Free Software Collection.iso
/
tool
/
book
/
src
/
event.h
< prev
next >
Wrap
C/C++ Source or Header
|
1993-11-11
|
4KB
|
114 lines
/*
* マウス イベント処理ライブラリ ヘッダファイル
*
* 1990.9.15 Make By ken
* modefied by sugi
*/
#if !defined(__EVENT_H__)
#define __EVENT_H__
#include "menu_evt.h"
typedef enum /* マウスから発生する低水準イベント */
{
Ev_NON, /* イベントなし */
Ev_ON_MOS, /* オブジェクト上に入った */
Ev_OFF_MOS, /* オブジェクト上から出た */
Ev_CLIP_MOS, /* クリックされた */
Ev_SELECT_MOS, /* クリックされて離された */
Ev_DOLACK_MOS, /* クリックしたまま移動 */
Ev_DLSEL_MOS, /* クリックしたまま移動して他の上で離した */
Ev_MOVE_MOS, /* クリックしたまま移動して外に出た */
Ev_REP_MOS, /* 押し続け */
Ev_CANCEL, /* キャンセル動作(右クリック) */
} event_t;
/* EVENT の flag に設定する値 */
#define Evf_NULL 0 /* フラグの初期化値 */
#define Evf_REPEAT 1 /* リピート動作をする */
#define Evf_CLIP 2 /* クリップ動作をしない */
#define Evf_CSR 4 /* クリック位置をセットする */
#define Evf_LOCK 8 /* イベント発生を専有する */
#define Evf_PAINT 16 /* クリップ動作は塗り潰し */
#define Evs_LEFT 1 /* 左ボタンのクリックで動作 */
#define Evs_RIGHT 2 /* 右ボタンのクリックで動作 */
#define isrepeat(c) ((c)->flag & Evf_REPEAT)
#define isclip(c) ((c)->flag & Evf_CLIP)
#define iscsr(c) ((c)->flag & Evf_CSR)
#define islock(c) (((c)->flag & Evf_LOCK) && ((c)->now == Ev_REP_MOS))
#define ispaint(c) ((c)->flag & Evf_PAINT)
#define isleft(c) ((c)->sw & Evs_LEFT)
#define isright(c) ((c)->sw & Evs_RIGHT)
typedef struct evt_s {
struct evt_s *next, *back;
short int level; /* レベル */
short int flag; /* 各種スイッチ */
event_t now;
mevt_t no;
short int x1, y1, x2, y2;
void (*proc)();
} evt_t;
typedef struct _EVT
{
struct _EVT *next, *back ;
short int level ; /* イベントレベル */
short int sw ; /* 各種スイッチ */
void (*proc)() ;
} EVT ;
#define NOP Evf_NULL /* リピートなし、クリップ動作あり */
#define REP Evf_REPEAT /* リピートあり */
#define CLIP Evf_CLIP /* クリップ動作なし */
#define CSR Evf_CSR /* クリック位置をセット */
#define LOCK Evf_LOCK /* イベント発生を専有 */
#define PAINT Evf_PAINT /* クリップ動作は塗り潰し */
#define LEFT Evs_LEFT /* 左ボタンのクリックで動作 */
#define RIGHT Evs_RIGHT /* 右ボタンのクリックで動作 */
/* マウスボタンの状態検査 */
extern int lbtn(int sw);
extern int rbtn(int sw);
/* イベント発生待ち */
extern void EVT_loop( int min_level, int max_level ) ;
/* 一般イベントの登録・調査・解除・全解除 */
extern evt_t *EVT_set_node(int x1, int y1, int xs, int ys,
int level, void (*proc)(), mevt_t no, int rep);
extern evt_t *EVT_get_node( int level, mevt_t no ) ;
extern void EVT_level_free( int level ) ;
extern void EVT_reset( void ) ;
extern void BTN_set( int x,int y, int xs,int ys, int wind_col,
int lev, void (*proc)(), mevt_t evt, int rep);
/* キャンセル動作の登録・解除・動作の制御 */
extern int EVT_control_cancel( int flag ) ;
extern void EVT_set_cancel( int level, void (*proc)() ) ;
extern void EVT_unset_cancel( int level ) ;
/* 余白イベントの登録・解除・動作の制御 */
extern int EVT_control_ground( int flag ) ;
extern void EVT_set_ground( int level, void (*proc)(), int sw ) ;
extern void EVT_unset_ground( int level ) ;
/* インターバル呼び出しイベントの登録と解除 */
extern int EVT_set_interval( int level, int value, void (*proc)() ) ;
extern void EVT_unset_interval( void ) ;
/* ボタンのクリップ処理 */
extern void DSP_clip_on(evt_t *ep);
extern void DSP_clip_off(evt_t *ep);
#endif /* !defined(__EVENT_H__) */